#ifndef _CFJUGADOR_H_
#define _CFJUGADOR_H_

#include "sprite.h"
#include <vector>


using namespace std;

enum estado_jugador { 
    ST_DEPIE, 
    ST_SALTO,
    ST_PUNYO,
    ST_PATA,
    ST_SPUNYO, /* Puño con salto */
    ST_SPATA,  /* Patada con salto */
    ST_SPECIAL1, /* Especial 1 */
    ST_POSE,
    ST_ALANTE,
    ST_ATRAS,
    ST_BLOQUEA,
    ST_GOLPEA,
    ST_MUERTO};

typedef struct {
    SDL_Rect cuerpo;
    SDL_Rect brazos;
    SDL_Rect piernas;
    int frame;
} frame_anim;


class CFJugador : public Sprite 
{
public:

    //! Constructor por defecto
    CFJugador();
    //! Constructor abreviado
    CFJugador(Image *img,
           unsigned int w,
           unsigned int h);
    //! Destructor
    virtual ~CFJugador();
    //! Dibujamos sobre la superficie surf(x,y)
    virtual void draw(SDL_Surface *surf);
    //! Actualizamos las coordenadas del CFJugador, para un intervalo de tiempo
    virtual void update(unsigned int time_delta);

    //! Nivel de energia
    int energia;
    //! Estado actual
    int estado;
    //! Barra de especial
    int especial;

    //! Si el personaje está mirroreado
    int mirror;

    //! Vectores con las animaciones
    vector< vector<frame_anim> >anim_vecs;

    //! Avatar
    Image *avatar;
    
    //! Acciones de movimiento
    void patada();
    void punyo();
    void alante();
    void atras();
    void golpear();
    void salto();
    void especial1();
    void parar();
    void morir();
    void ganar();
    void bloquear();
   
    //! Carga la configuracion de un personaje
    void loadConf(const char *path);

    //! Velocidad en X e Y
    int vx,vy;

private:
    int i;
    
};
#endif


/* ex: set cindent expandtab softtabstop=4 shiftwidth=4 tabstop=4: */
